package saei.bean;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.ForeignKey;

import saei.bean.vo.ItemPlanRotacionVO;

@SuppressWarnings("serial")
@Entity
@Table(name="Item_Plan_Rotacion")
public class ItemPlanRotacion extends EntidadPersistente{
	@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_item_rotacion_plan")
    @JoinColumn(name="id_plan")
	private PlanRotacion planRotacion;
	@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_item_rotacion_usuario")
    @JoinColumn(name="id_usuario")
	private Usuario usuario;
	@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_item_rotacion_representacion")
    @JoinColumn(name="id_representacion")
	private Representacion representacion;
	@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_item_rotacion_equipo_obsoleto")
    @JoinColumn(name="id_equipo_obsoleto")
	private Cpu equipoObsoleto;	
	@Temporal(TemporalType.TIMESTAMP)
    @Column(name="fec_rotado")
	private Date fechaRotacion;
	@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @ForeignKey(name="fk_item_rotacion_equipo_nuevo")
    @JoinColumn(name="id_equipo_nuevo")
	private Cpu nuevoEquipo;
	
	public PlanRotacion getPlanRotacion() {
		return planRotacion;
	}

	public void setPlanRotacion(PlanRotacion planRotacion) {
		this.planRotacion = planRotacion;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Representacion getRepresentacion() {
		return representacion;
	}

	public void setRepresentacion(Representacion representacion) {
		this.representacion = representacion;
	}

	public Cpu getEquipoObsoleto() {
		return equipoObsoleto;
	}

	public void setEquipoObsoleto(Cpu equipoObsoleto) {
		this.equipoObsoleto = equipoObsoleto;
	}

	public Date getFechaRotacion() {
		return fechaRotacion;
	}

	public void setFechaRotacion(Date fechaRotacion) {
		this.fechaRotacion = fechaRotacion;
	}

	public Cpu getNuevoEquipo() {
		return nuevoEquipo;
	}

	public void setNuevoEquipo(Cpu nuevoEquipo) {
		this.nuevoEquipo = nuevoEquipo;
	}

	public ItemPlanRotacionVO getVO() {
		ItemPlanRotacionVO retVal = new ItemPlanRotacionVO();
		retVal.setUsuario(usuario.getNombre());
		retVal.setRepresentacion(representacion.getNombre());
		retVal.setFechaAlta(equipoObsoleto.getRemito().getFechaRecepcion());
		retVal.setMarca(equipoObsoleto.getMarca().getDescripcion());
		retVal.setModelo(equipoObsoleto.getModelo().getDescripcion());
		retVal.setFechaRotacion(fechaRotacion);
		retVal.setNumeroSerie(equipoObsoleto.getNumeroSerie());
		
		return retVal;
	}
}

